PPM Image


Portable Anymap Format (PNM)

PNM is a collection of three image formats: The Portable PixMap Format (PPM with RGB colors from 0 to 255), the Portable GrayMap Format (PGM with gray scales colors from 0 to 255), and the Portable BitMap Format (PBM with two colors: black and white). They are file formats designed to exchange images between platforms.
PNM es una colección de tres formatos de imagen: el Formato Portable Pixmap (PPM con colores RGB desde 0 a 255), el Formato Portable de Mapas de Grises (PGM con colores en la escala de grises de 0 a 255) y el Formato Portable de Bitmaps (PBM con dos colores: blanco y negro). Estos son formatos de archivos diseñados para intercambiar imágenes entre distintas plataformas.

File Format Description

The file starts with the P character (one-byte in ASCII). After that there is a number:
  • P1 for an ASCII file storing a Portable BitMap (PBM) *.pbm
  • P2 for an ASCII file storing a Portable GrayMap (PGM) *.pgm
  • P3 for an ASCII file storing a Portable PixMap (PPM) *.ppm
  • P4 for a binary file storing a Portable BitMap (PBM) *.pbm
  • P5 for a binary file storing a Portable GrayMap (PGM) *.pgm
  • P6 for a binary file storing a Portable PixMap (PPM) *.ppm
The file has then three numbers (each one in ASCII): the width, the height, and the maximum value for the color values (the minimum value is always zero). The file then has exactly the width times the height values; each value for each pixel in the image as shown in the figure below.
El archivo comienza con la letra P (un byte en ASCII). Después de este hay un número:
  • P1 para un archivo ASCII almacenando un BitMap Portable (PBM) *.pbm
  • P2 para un archivo ASCII almacenando un GrayMap Portable (PGM) *.pgm
  • P3 para un archivo ASCII almacenando un PixMap Portable (PPM) *.ppm
  • P4 para una archivo binario almacenando un BitMap Portable (PBM) *.pbm
  • P5 para una archivo binario almacenando un GrayMap Portable (PGM) *.pgm
  • P6 para una archivo binario almacenando un PixMap Portable (PPM) *.ppm
El archivo tiene entonces tres números (cada uno en ASCII): el ancho, el alto y el máximo valor para los valores de los colores (el valor mínimo es siempre cero). El archivo entonces tiene exactamente el ancho veces la altura valores; cada valor por cada pixel en la imagen como se muestra en la figura de abajo.

PpmFormat

Format    Bytes per pixel (binary format)  
PBM1 (black = 0 and white = 1)
PGM8 (black = 0,..., gray = 128, ..., white = 255)
PPM24 (8 bits for red, 8 bits for green, 8 bits for blue)

Comments

Each line that begins with the # characters is considered a comment, and therefore, this line is ignored.
Cada línea que comienza con el carácter # es considerada un comentario, y por lo tanto, ésta línea es ignorada.

Problem 1
Create a Wintempla Window application called PpmViewer to display a PPM image (Be sure to choose Window Application instead of Dialog Application when creating the project). Do not forget to check the Paint event in the main window (Open Wintempla, double click anywhere in the editor to open the Window Properties dialog, in the Event tab: check Paint). For this problem you will need a PPM file, you may convert any image file to a PPM file using an online image converter in the Internet.
Cree una aplicación de Ventana usando Wintempla llamada PpmViewer para mostrar una imagen PPM (Asegúrese de escoger Window Application en lugar de Dialog Application cuando cree el proyecto). No se olvide de marcar el evento Paint en la ventana principal. (Abra Wintempla, haga doble clic en cualquier parte del editor para abrir el diálogo de Propiedades de la Ventana, en la pestaña de Event: seleccione Paint). Para este problema usted necesitará un archivo PPM, usted puede convertir cualquier archivo de imagen a un archivo PPM usando un convertidor de imágenes online en la Internet.

PaintEvent

PpmViewer.h
#pragma once //______________________________________ PpmViewer.h
#include "Resource.h"
class PpmViewer: public Win::Window
{
public:
     PpmViewer()
     {
     }
     ~PpmViewer()
     {
     }
     CG::DIBitmap bitmap;
     . . .
};


PpmViewer.cpp
. . .
// REMEMBER THAT THIS IS A WINDOW APPLICATION
void PpmViewer::Window_Open(Win::Event& e)
{
     const wchar_t* error = bitmap.ImportPortablePixMap(L"sky.ppm");
     if (error != NULL)
     {
          this->MessageBox(error, L"PpmViewer", MB_OK | MB_ICONERROR);
     }
     this->Repaint(NULL, true);
}

void PpmViewer::Window_Paint(Win::Event& e)
{
     CG::Gdi gdi(hWnd, true, false);
     gdi.DrawBitmap(bitmap, 0, 0);
}


PpmViewerRun

© Copyright 2000-2021 Wintempla selo. All Rights Reserved. Jul 22 2021. Home